// pages/preview/preview.js
const http = require("../../api/camp")
const api = require("../../api/index")
const { oss_url } = require("../../utils/request")
Page({

  /**
   * 页面的初始数据
   */
  data: {
    value:4,
    showInfo: false,
    showFac: false,
    type:'1',
    modalHide:true,
    phoneNumber: '12345678900',
    destination: {
      latitude: 39.904989, // 目的地纬度
      longitude: 116.405285 // 目的地经度
    },
    campDetail:{},
    // 是否收藏
    isFavorited:false,
    // 防抖
    debounceTimeout:null,
    oss_url:oss_url,
    isFavorited: false, // 初始收藏状态
    isCoolingDown: false, // 是否处于冷却状态
    coolDownTime: 1000, // 冷却时间，单位：毫秒,
    campCommentList:[], //评论列表
    scenicList:[], //景点列表
    campsiteList:[], //营位列表
    facilitiesList:[] //营地服务设施
  },
  showFacilities() {
    this.setData({
      showFac: true
    })
  },
  hideFacilities() {
    this.setData({
      showFac: false
    })
  },
  showCampInfo() {
    this.setData({
      showInfo: true
    })
  },
  hideCampInfo() {
    this.setData({
      showInfo: false
    })
  },

  // 获取滚动条当前位置
  onPageScroll(e){
    // console.log(e)
    if (e.scrollTop > 100) {
      this.setData({
        floorstatus: true
      });
    } else {
      this.setData({
        floorstatus: false
      });
    }
  },

  //回到顶部
  goTop(e){ // 一键回到顶部
    if (wx.pageScrollTo) {
      wx.pageScrollTo({
        scrollTop: 0
      })
    }
  },
  //点击导航跳转到腾旭地图页面
  goNavigation(){
    let item = this.data.campDetail
    // 调用微信官方的函数跳转到腾讯地图页面
    wx.openLocation({
      latitude: Number(item.latitude), // 纬度
      longitude: Number(item.longitude), // 经度
      scale: 28, // 缩放比例
      name: item.location, // 位置名
      address: item.address
    });
  },
  //点击电话
  goPhone(){
    console.log(this.data.campDetail,"222")
    wx.makePhoneCall({
      phoneNumber: this.data.campDetail.phone,
      success: function() {
        console.log('拨打电话成功！');
      },
      fail: function() {
        console.log('拨打电话失败！');
      }
    });
  },
  //获取评论列表
  getCommenList(campId){
    http.commentList(campId).then(res=>{
      this.setData({
        campCommentList:res.data
      })
      // console.log(res,"评论列表")
    })
  },
  // 我要评价
  toComment(){
    wx.navigateTo({
      url:`/pages/comment/comment?campId=${this.data.campDetail.campId}`
    })
  },
  // 发送收藏请求
  toggleFavorite() {
    if (this.data.isCoolingDown) {
      // 如果处于冷却状态，则提示用户
      wx.showToast({
        title: '操作太频繁，请稍后再试',
        icon: 'none'
      });
      return;
    }

    this.setData({ isCoolingDown: true });

    // 根据当前收藏状态决定调用哪个接口
    if (this.data.isFavorited) {
      // 取消收藏
      this.cancelFavorite();
    } else {
      // 收藏
      this.addFavorite();
    }
  },

  //添加收藏
  addFavorite: function() {
    // 发送收藏请求
    http.collectCamp({
      campId: this.data.campDetail.campId,
      userId:this.data.campDetail.userId
    }).then(res => {
      // 成功后更新状态
      this.setData({
        isFavorited: true,
        isCoolingDown: false
      });

      // 提示用户
      wx.showToast({
        title: '收藏成功',
        icon: 'success'
      })
    })
  },

  //取消收藏
  cancelFavorite: function() {
    // 发送取消收藏请求
    http.removeCollectCamp({
      campId: this.data.campDetail.campId,
      userId:this.data.campDetail.userId
    }).then(res => {
      // 成功后更新状态
      this.setData({
        isFavorited: false,
        isCoolingDown: false
      });

      // 提示用户
      wx.showToast({
        title: '取消收藏成功',
        icon: 'success'
      })
    })
  },

  //查看更多评论
  goCampComment(){
    wx.navigateTo({
      url: `/pages/campComment/campComment?campId=${this.data.campDetail.campId}`,
    })
  },

  hideModal(){
    this.setData({
      modalHide:true
    })
  },
  toSurroundingAttractions(){
    wx.navigateTo({
      url: '/pages/surroundingAttractions/surroundingAttractions',
    })
  },
  // 预约
  toReservation(){
    // 提示用户预约成功
    wx.showToast({
      title: '预约成功',
      icon: 'success'
    })
  },
  getCampDetail(campId){
    http.campDetail(campId).then(res=>{
      // 判断有没有逗号 有就是多张图片
      let item = res.data
      if(item.imageUrl.indexOf(',') != -1){
        item.images = item.imageUrl.split(',')
      }else{
        item.images = []
        item.images.push(item.imageUrl)
      }
      this.setData({
        campDetail:res.data
      })
      // console.log(this.data.campDetail,"campDetail")
    })
  },
  //获取营地周边景点
  getScenicInfo(campId){
    api.getScenicList(campId).then(res=>{
      this.setData({
        scenicList:res.data
      })
    })
  },
  //跳转到景点地图
  goScenicDetail(event){
    let {scenic} = event.currentTarget.dataset

    // console.log(scenic,'scenic')
    // 调用微信官方的函数跳转到腾讯地图页面
    wx.openLocation({
      latitude: Number(scenic.latitude), // 纬度
      longitude: Number(scenic.longitude), // 经度
      scale: 28, // 缩放比例
      name: scenic.scenicName, // 位置名
      address: scenic.address
    });
  },
  // 获取房车营位
  getCampsiteInfo(campId) {  
    http.getCampsiteList({ campId: campId }).then(res => {  
      // 字符串转为数组，然后构造成数组对象，并处理factor字段  
      res.data = res.data.map(item => {  
        // 假设item.factor是一个由逗号分隔的ID字符串  
        const factorNames = this.handleFactor(item.factor); // 调用handleFactor处理factor  
        item.factorNames = factorNames; // 将处理后的factorNames添加到item中  
        return item;  
      });  
    
      this.setData({  
        campsiteList: res.data  
      });  
      console.log("object", res.data);  
    });  
  },
  // 处理factor字符串，将其转换为一个包含对应name的数组  
  handleFactor(factorStr) {  
    const factorList = [  
      {id: "1", name: "有水"},  
      {id: "2", name: "有电"},  
      {id: "3", name: "无水"},  
      {id: "4", name: "无电"},  
      {id: "5", name: "有新能源车充电桩"},  
      {id: "6", name: "有卫生间"},  
      {id: "7", name: "其他条件"}  
    ];  
    
    // 将factorStr按逗号分割成数组，然后查找每个ID对应的name  
    const factorIds = factorStr.split(',');  
    const factorNames = factorIds.map(id => {  
      const factor = factorList.find(f => f.id === id);  
      return factor ? factor.name : `未知条件-${id}`; // 如果找不到，返回一个带有ID的占位符  
    });  
    
    return factorNames;  
  },
  //获取营地基础设施信息
  getFacilitiesInfo(campId){  
    http.getFacilitiesA(campId).then(res=>{  
      this.setData({  
        facilitiesList:res.data  
      })  
      console.log(res,"facilitiesList")
    })  
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // console.log(options);
    // console.log(http,"http")
    if(options.campId) {
      this.getCampDetail(options.campId)
      this.getCommenList(options.campId)
      this.getScenicInfo(options.campId)
      this.getCampsiteInfo(options.campId)
      this.getFacilitiesInfo(options.campId)
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})